package br.com.sjdr.projeto.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import br.com.sjdr.projeto.item.Item;
import br.com.sjdr.projeto.item.Pedido;
import br.com.sjdr.projeto.menu.MenuLoogin;
import br.com.sjdr.projeto.persistencia.PersistirCliente;
import br.com.sjdr.projeto.persistencia.PersistirHistorico;
import br.com.sjdr.projeto.pessoa.Cliente;

public class GuiPedido implements ActionListener {

	static JTextArea resultado = new JTextArea(30, 40);
	static JScrollPane scroller = new JScrollPane(resultado);
	static JPanel panel = new JPanel();

	Item it = new Item();
	static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
	static JScrollPane JSRola;

	JButton desligar = new JButton("Encerrar o Programa");
	JButton logof = new JButton("Efetuar Logoff");
	JButton voltar = new JButton("Voltar ao menu anterior");

	JButton incluirN = new JButton("Incluir Nome");
	JButton incluirC = new JButton("Incluir Codigo");
	JButton excluir = new JButton("Excluir Codigo");
	JButton fVenda = new JButton("Fechar Venda");
	JButton salvar = new JButton("Salvar Pedido");

	JLabel txt1 = new JLabel("1- Verifique se o nome do cliente esta correto");
	JLabel txt2 = new JLabel("Incluir Itens pelo Codigo");
	JLabel txt3 = new JLabel("Incluir Itens pelo Nome");
	JLabel txt4 = new JLabel("Excluir Itens pelo Codigo");
	JLabel txt5 = new JLabel("Salvar o Pedido");
	JLabel txt6 = new JLabel("Fechar Venda");

	JTextField t2 = new JTextField("Codigo");
	JTextField t3 = new JTextField("Nome");
	JTextField t4 = new JTextField("Codigo");

	JFrame frame = new JFrame();

	Pedido p1 = new Pedido();

	public void novoPedido(Pedido p2) {

		p1 = p2;

		frame.setSize(800, 600);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(null);
		// Centraliza a janela.
		java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
				.getScreenSize();
		int componentWidth = frame.getWidth();
		int componentHeight = frame.getHeight();
		frame.setBounds((screenSize.width - componentWidth) / 2,
				(screenSize.height - componentHeight) / 4, componentWidth,
				componentHeight);

		// TextFields
		JTextField t1 = new JTextField(p1.getCliente());
		t1.setEditable(false);
		t1.setBounds(50, 70, 200, 25);// Numero ordem
		t1.setFont(new java.awt.Font("arial", 0, 16));
		t1.setEnabled(true);
		frame.add(t1);

		t2.setBounds(215, 120, 100, 21);// Numero ordem
		t2.setFont(new java.awt.Font("arial", 0, 12));
		t2.setEnabled(true);
		frame.add(t2);

		t3.setBounds(215, 170, 100, 21);// Numero ordem
		t3.setFont(new java.awt.Font("arial", 0, 12));
		t3.setEnabled(true);
		frame.add(t3);

		t4.setBounds(215, 220, 100, 21);// Numero ordem
		t4.setFont(new java.awt.Font("arial", 0, 12));
		t4.setEnabled(true);
		frame.add(t4);

		// Textos

		txt1.setBounds(50, 50, 600, 25);
		txt1.setFont(new java.awt.Font("arial", 1, 10));
		frame.add(txt1);
		txt1.setVisible(true);
		txt2.setBounds(50, 100, 600, 25);
		txt2.setFont(new java.awt.Font("arial", 1, 10));
		frame.add(txt2);
		txt2.setVisible(true);
		txt3.setBounds(50, 150, 600, 25);
		txt3.setFont(new java.awt.Font("arial", 1, 10));
		frame.add(txt3);
		txt3.setVisible(true);
		txt4.setBounds(50, 200, 600, 25);
		txt4.setFont(new java.awt.Font("arial", 1, 10));
		frame.add(txt4);
		txt4.setVisible(true);
		txt5.setBounds(50, 250, 600, 25);
		txt5.setFont(new java.awt.Font("arial", 1, 10));
		frame.add(txt5);
		txt5.setVisible(true);
		txt6.setBounds(50, 300, 600, 25);
		txt6.setFont(new java.awt.Font("arial", 1, 10));
		txt6.setVisible(true);
		frame.add(txt6);

		// Bot�es

		desligar.setBounds(10, 530, 100, 25);
		desligar.setSize(220, 20);
		desligar.setEnabled(true);
		frame.add(desligar);

		logof.setBounds(10, 500, 100, 25);
		logof.setSize(220, 20);
		logof.setEnabled(true);
		frame.add(logof);

		voltar.setBounds(10, 470, 100, 25);
		voltar.setSize(220, 20);
		voltar.setEnabled(true);
		frame.add(voltar);

		incluirC.setBounds(50, 120, 120, 25);
		incluirC.setSize(140, 20);
		incluirC.setEnabled(true);
		frame.add(incluirC);

		incluirN.setBounds(50, 170, 100, 25);
		incluirN.setSize(140, 20);
		incluirN.setEnabled(true);
		frame.add(incluirN);

		excluir.setBounds(50, 220, 100, 25);
		excluir.setSize(140, 20);
		excluir.setEnabled(true);
		frame.add(excluir);

		salvar.setBounds(50, 270, 100, 25);
		salvar.setSize(140, 20);
		salvar.setEnabled(true);
		frame.add(salvar);

		fVenda.setBounds(50, 320, 100, 25);
		fVenda.setSize(140, 20);
		fVenda.setEnabled(true);
		frame.add(fVenda);

		// Lista de compras

		resultado.setLineWrap(true);
		scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		panel.add(scroller);

		panel.setSize(500, 600);
		panel.setLocation(300, 30);

		imrpimirListaCompras();

		voltar.setVisible(true);
		panel.add(voltar);
		voltar.addActionListener(this);

		// A��o

		desligar.addActionListener(this);
		logof.addActionListener(this);
		voltar.addActionListener(this);
		incluirC.addActionListener(this);
		incluirN.addActionListener(this);
		excluir.addActionListener(this);
		fVenda.addActionListener(this);
		salvar.addActionListener(this);
		frame.setVisible(true);

	}

	/**
	 * chama carrinhop de compras externamente para atualiza-lo
	 */
	private void imrpimirListaCompras() {
		frame.getContentPane().add(panel);
		resultado.setText("");
		double total = imHistorico(resultado, p1);
		p1.setTotal(total);
	}

	/*
	 * auxilia carrinho de compras L� vetor e imprime
	 */

	private double imHistorico(JTextArea resultado, Pedido p) {

		// Carrinho de compras
		double total = 0;
		resultado.append("Pedido de: " + p.getCliente() + "\n\n");
		for (int i = 0; i < p.vec.size(); i++) {
			p.setTotal(p.getTotal()+p.vec.get(i).getPrecoFinal());
			resultado.append("\n\n nome do Item " + p.vec.get(i).getNomeItem());
			resultado.append("\n Codigo do Item " + p.vec.get(i).getCogigo());
			resultado
					.append("\n Pre�o do Item " + p.vec.get(i).getPrecoFinal());
			resultado.append("\n Quantidade "
					+ p.vec.get(i).getQuantidadeporcliente());

			total = total
					+ (p.vec.get(i).getPrecoFinal() * p.vec.get(i)
							.getQuantidadeporcliente());
		}

		resultado.append("\n\nValor total da compras " + total);
		return p.getTotal();
		

	}

	@Override
	public void actionPerformed(ActionEvent e) {

		Object source = e.getSource();
		if (source == salvar) {
			try {
				Pedido.FraTab.setVisible(false);
				frame.setVisible(false);
			} catch (Exception e2) {
			}

			PersistirHistorico.pedidosPendentes.add(p1);
			JOptionPane.showMessageDialog(null, "Pedido Salvo Com Exito \n\n ");
			TelaVendedor t = new TelaVendedor();
			t.go();

		}

		if (source == fVenda) {

			Pedido.validcaoPedido(p1);
			
			try {
			frame.setVisible(false);	
			Pedido.FraTab.setVisible(false);
			} catch (Exception e2) {
			}
			TelaVendedor t = new TelaVendedor();
			t.go();



		}

		if (source == excluir) {
			try {
				Pedido.FraTab.setVisible(false);
			} catch (Exception e2) {
			}
			Pedido.exluiItemCodigo(p1, Integer.parseInt(t4.getText()));
			imrpimirListaCompras();
		}

		if (source == incluirC) {

			GuiItem g = new GuiItem();
			it = g.buscaCod(Integer.parseInt(t2.getText()));
			Pedido.adicionaItemLista(p1, it);
			imrpimirListaCompras();

		}

		if (source == incluirN) {

			GuiItem g = new GuiItem();
			it = g.buscaPorNome(t3.getText());
			Pedido.adicionaItemLista(p1, it);
			imrpimirListaCompras();

		}

		if (source == desligar) {
			MenuLoogin.metodosdeSaida();

		}
		if (source == logof) {
			
			frame.setVisible(false);
			TelaLogin t = new TelaLogin();
			t.login();

		}
		if (source == voltar) {
			frame.setVisible(false);
			

		}

	}

	/**
	 * Busca cliente por nome e retorna cliente caso encontre se n�o encontrrar
	 * retorna null
	 * 
	 * @param nome
	 * @return
	 */
	public Cliente buscarCliente(String nome) {

		for (int i = 0; i < PersistirCliente.clientelist.size(); i++) {
			// A função aceita compara independente de case sensitive
			if (PersistirCliente.clientelist.get(i).getNome()
					.equalsIgnoreCase(nome)) {
				return PersistirCliente.clientelist.get(i);
			}
		}
		return null;

	}

	public Pedido buscarPedido(String nome) {

		for (int i = 0; i < PersistirHistorico.pedidosPendentes.size(); i++) {
			if (PersistirHistorico.pedidosPendentes.get(i).getCliente()
					.equalsIgnoreCase(nome)) {
				return PersistirHistorico.pedidosPendentes.get(i);

			}
		}

		return null;
	}
	
	
}
